home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1994 January / 1994-01a.d64 / link 'em (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  8KB  |  206 lines

  1. 0 rem copyright 1994 - compute publications intl ltd - all rights reserved
  2. 1 ifa=0thena=1:load"link.data",8,1
  3. 2 poke53280,0:poke53281,0:poke53270,216:poke53282,2:poke53283,1:poke788,52
  4. 3 poke792,193:poke56578,63:poke56576,196:poke53272,18:poke648,196
  5. 4 print"[154][147]"chr$(14)chr$(8):gosub100
  6. 5 x=5:y=5:gosub138:print"[158][206]"z$"[208]":fork=0to2:printtab(5)"[210]o"spc(26)"o[210]":next
  7. 6 printtab(5)"[209]"z$"[211]"
  8. 7 fork=0to25:forl=0to2:poke50423+k+l*40,128+k+l*26:next:next:x=7:y=11:gosub138
  9. 8 printsp$:printtab(7)"o[146]createdo[146]by:o[146]johno[146]camerono":printtab(7)sp$
  10. 9 printtab(11)""left$(sp$,19):printtab(11)"o[146]@o[146]copyrighto[146]1994o"
  11. 10 printtab(11)left$(sp$,19):printtab(11)"o[146]computeo[146]magazineo"
  12. 11 printtab(11)left$(sp$,19):printtab(13)"[158])o[146]presso[146]fireo[146]("
  13. 12 fork=0to7:ms=fnrn(253)+1:poke51456+k,ms:ml=1:gosub94
  14. 13 if((peek(56320)and16)=0)or((peek(56321)and16)=0)thenk=10
  15. 14 next:ifk<10then12
  16. 15 fork=0to7:poke51456+k,0:next
  17. 16 print"[147][156] [176]"bd$"[174]":fork=0to13:print"[221]"spc(36)"[221]":next
  18. 17 gosub93:print"";
  19. 18 fork=0to1:forl=0to1:print"[221]        [221]        [221]";:next:print"";:next
  20. 19 print"[173][192][178][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][189][173][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][178][192][189]"
  21. 20 fork=0to4:print"[221]"spc(32)"[221]":next:print"[173]"left$(bd$,32)"[189]";
  22. 21 x=14:y=0:gosub138:print"([158] link 'em )"
  23. 22 fork=2to18step2:fory=1to13step2:x=k:gosub138:gosub155:printsq$(0)
  24. 23 x=38-k:gosub138:gosub155:printsq$(0):next:next
  25. 24 x=6:y=19:gosub138:print"how many to play against you?"
  26. 25 nm=3:gosub55:gosub59:np=ch+1:gosub71:rm=126:cp=1:px=0:py=0
  27. 26 fork=1tonp:ps(k)=0:pn$(k)="ball"+str$(k):gosub140:next
  28. 27 fork=1tonp:y=16:gosub143:poke646,cl(k)-8:printpn$(k):next
  29. 28 fork=1tonp:poke646,1-2*(cp<>k):gosub99
  30. 29 gosub141:next
  31. 30 gosub48:pokesp+21,1:ox=px:oy=py
  32. 31 gosub73
  33. 32 px=px-(jr=8andpx<17)+17*(jr=8andpx>16)+(jl=4andpx>0)-17*(jl=4andpx<1)
  34. 33 py=py-(jd=2andpy<6)+6*(jd=2andpy>5)+(ju=1andpy>0)-6*(ju=1andpy<1)
  35. 34 iffbthen36
  36. 35 ifpx=oxandpy=oythen31
  37. 36 gosub48:iffbthenpokesp+21,0:gosub159:goto38
  38. 37 goto30
  39. 38 ifrm>0then28
  40. 39 x=0:y=15:gosub138:gosub93
  41. 40 wn=1:bg=0:fork=1tonp:print"[159]":gosub99
  42. 41 ifps(k)>bgthenbg=ps(k):wn=k
  43. 42 next:k=wn:gosub143:gosub144:print""sc$
  44. 43 x=5:y=21:gosub138:print"[159]player"wn"[157][159]:  you are the winner!"
  45. 44 forzk=1to4:cp=k:x=4:y=19:gosub138:poke646,cl(zk)and7:print"[206]"z$"[207][207][208]"
  46. 45 fork=1to3:printtab(4)"[210]"spc(30)"[210]":next:printtab(4)"[209]"z$"[207][207][211]"
  47. 46 if((peek(56320)and16)=0)or((peek(56321)and16)=0)then16
  48. 47 nextzk:goto44
  49. 48 gosub150:pokesp,sx:pokesp+16,lr:pokesp+1,sy:return
  50. 49 end
  51. 50 x=4+int((33-3*nm)/2):y=19:gosub138:fork=0tonm-1
  52. 51 s1(k)=cl(fnrn(3)+1):s2(k)=fnrn(6)
  53. 52 f=0:ifk>0thengosub57
  54. 53 iff=1then51
  55. 54 poke646,s1(k):printfm$(s2(k))" ";:next:print
  56. 55 x=4+int((33-3*nm)/2):y=21:gosub138:fork=0tonm-1
  57. 56 print"[154]"nu$(k)" ";:next:print:return
  58. 57 forl=0tok-1:ifs1(l)=s1(k)ands2(l)=s2(k)thenf=1:l=k
  59. 58 next:return
  60. 59 ch=0
  61. 60 y=22:gosub67:printar$
  62. 61 ol=ch:gosub73:ch=ch-(jr=8andch<nm-1)+(jl=4andch>0)
  63. 62 ifch<>olthenz=x:x=4+int((33-3*nm)/2)+3*ol:gosub138:print"  ":gosub66
  64. 63 ifnotfbthen60
  65. 64 ms=30:ml=10:gosub94
  66. 65 ch=ol:y=21:gosub138:print"[151]"zz$(ch)"[157][157]  ":ch=ch+1:return
  67. 66 x=z:ms=50:ml=10:gosub94:return
  68. 67 x=4+int((33-3*nm)/2)+3*ch:gosub138:return
  69. 68 y=21:ch=c1:gosub67:a$=zz$(ch):a=od(ch):zz$(ch)=zz$(c2):print"[154]"zz$(ch)
  70. 69 od(ch)=od(c2):ch=c2:gosub67:od(c2)=a
  71. 70 zz$(ch)=a$:print"[154]"a$:return
  72. 71 x=4:fory=19to23:gosub138:print"                                ":next
  73. 72 return
  74. 73 jy=15-(peek(j)and15):ju=jyand1:jd=jyand2:jl=jyand4:jr=jyand8
  75. 74 fb=((peek(j)and16)=0)
  76. 75 ifju=0andjd=0andjr=0andjl=0andfb=0then77
  77. 76 return
  78. 77 a=-(j=56320)+(j=56321):j=j+a:goto73
  79. 78 forz1=0to7:x0=px:y0=py
  80. 79 ify0<3and(z1<2orz1=7)then91
  81. 80 ify0>4and(z1>2andz1<6)then91
  82. 81 ifx0<3and(z1>4)then91
  83. 82 ifx0>14and(z1>0andz1<4)then91
  84. 83 forz2=0to2:x0=x0+xd(z1):y0=y0+yd(z1):b0=(x0+1)+y0*18
  85. 84 ifx0<0orx0>17ory0<0ory0>6thenz2=9:goto86
  86. 85 ifun(b0)<>(9+cp)thenz2=9
  87. 86 nextz2:ifz2=10then91
  88. 87 fork=1tonp:poke646,1-2*(cp<>k):gosub99:next
  89. 88 un(b0)=20:x=2+x0*2:y=1+y0*2:gosub138:poke646,cl(cp):printbl$(5)
  90. 89 b0=(px+1)+py*18:x=2+px*2:y=1+py*2:gosub138:printbl$(5):un(b0)=20
  91. 90 ps(cp)=ps(cp)+250:ms$="[158]four in a row! bonus 250 pts!":gosub145
  92. 91 nextz1
  93. 92 return
  94. 93 print"[156][171][192][192](  )[192][192][178][192][192](  )[192][192][174][176][192][192](  )[192][192][178][192][192](  )[192][192][179]":return
  95. 94 pokeso+5,10:pokeso+6,5:pokeso+24,7:pokeso,0:pokeso+1,ms
  96. 95 pokeso+4,33:forsz=1toml:next:pokeso+4,32:return
  97. 96 ml=5:forms=200to10step-10:gosub94:next:return
  98. 97 ml=5:forms=10to200step10:gosub94:next:return
  99. 98 ml=1:forms=0to255step5:gosub94:next:return
  100. 99 y=17:gosub143:gosub144:printsc$:return
  101. 100 z$="[207]":fork=0to26:z$=z$+"[207]":next
  102. 101 x$="":y$=""
  103. 102 sp$="":fork=0to25:sp$=sp$+"o":next
  104. 103 bd$="[192]":fork=0to34:bd$=bd$+"[192]":next
  105. 104 fork=0to5:readbl$(k):next
  106. 105 data"[","\","]","^_","[193][194][157][157][195][196][145]","#$[157][157]%&[145]"
  107. 106 fork=0to5:readfm$(k):next:fm$(6)=bl$(4):j=56320
  108. 107 data"]][157][157]]][145]","^_[157][157][212][213][146][145]","[186][187][157][157][188][190][145]","*+[157][157]-/[145]","^_[157][157]]][145]","]][157][157][212][213][146][145]"
  109. 108 fork=0to8:readnu$(k):next:readar$
  110. 109 data"[223][160]","[161][162]","[163][164]","[165][166]","[167][168]","[169][170]","[172][175]","[180][181]","[184][185]","[155][182][183]"
  111. 110 fork=0to4:readsq$(k):next:fork=0to4:readsn$(k),sc(k):next
  112. 111 data"[151][197][198][157][157][199][200][145]",";<[157][157]=>[145]","[201][202][157][157][203][204][145]","[151][214][215][157][157][216][217][145]","[151][218][219][157][157][220][255][145]"
  113. 112 data"[207][157][208][145]",10,"[205][157][206][145]",15,"[209][157][210][145]",25,"[211][157][212][145]",50,"[213][157][206][145]",75
  114. 113 fork=1to4:readcl(k):next:data10,14,13,15
  115. 114 dim un(126)
  116. 115 so=54272:fork=0to24:pokeso+k,0:next:pokeso+15,255:pokeso+18,128
  117. 116 pokeso+24,128
  118. 117 def fnrn(x)=int((peek(so+27)/256)*(x+1))
  119. 118 up$="your score goes up by "
  120. 119 sp=53248:pokesp+21,0:poke51192,0:pokesp,39:pokesp+1,57:pokesp+16,0
  121. 120 pokesp+39,10:fork=49152to49203step3:pokek,192:pokek+1,0:pokek+2,192:next
  122. 121 fork=0to1:poke49152+k,255:poke49203+k,255:next
  123. 122 fork=49206to49216:pokek,0:next:gosub130
  124. 123 cs$(0)=sn$(2)+sn$(3):cs$(1)=sn$(3)+sn$(0):cs$(2)=sn$(4)+sn$(3)
  125. 124 cs$(3)=sn$(1)+sn$(0)+sn$(0):cs$(4)=sn$(1)+sn$(3)+sn$(0)
  126. 125 cs$(5)=sn$(2)+sn$(0)+sn$(0):cs$(6)=sn$(2)+sn$(3)+sn$(0)
  127. 126 fork=0to6:reads2$(k):next:data25,50,75,100,150,200,250
  128. 127 fork=0to7:readxd(k),yd(k):next
  129. 128 data0,-1,1,-1,1,0,1,1,0,1,-1,1,-1,0,-1,-1
  130. 129 return
  131. 130 fork=0to8:zz$(k)=nu$(k):od(k)=k:next:return
  132. 131 zy(0)=fnrn(nm-1):fork=1tonm-1
  133. 132 zy(k)=fnrn(nm-1):fl=0:forl=0tok-1:ifzy(k)=zy(l)thenfl=1:l=k
  134. 133 nextl:iffl=1then132
  135. 134 nextk:return
  136. 135 f=0:fork=0tonm-1:ifzy(k)<>od(k)thenf=1:k=nm
  137. 136 next:iff=0thenfl=1
  138. 137 return
  139. 138 print""left$(x$,x)left$(y$,y);:return
  140. 139 x=5*k+(4*(k-1))-(k>2):return
  141. 140 gosub139:y=15:gosub138:poke646,cl(k):print"^_":return
  142. 141 gosub139:x=x-1:y=15:gosub138:poke646,1-2*(cp<>k)
  143. 142 print"()":return
  144. 143 x=3*k+(6*(k-1))-(k>2):gosub138:return
  145. 144 s$=str$(ps(k)):sc$=right$("000000"+right$(s$,len(s$)-1),6):return
  146. 145 ox=x:oy=y:gosub71:x=14:y=20:gosub138:print"[191] player"cp"[157] [191]"
  147. 146 x=4+int((34-len(ms$))/2):y=22:gosub138:printms$
  148. 147 a=(peek(646)and7):a2=-(a=2)-2*(a=5)-3*(a=7):ona2gosub96,97,98
  149. 148 forl=1to2000:next:zk=fre(0):gosub71:x=ox:y=oy:return
  150. 149 gosub138:print"  [157][157]  ":un(b)=9+cp:gosub156:return
  151. 150 xx=2+px*2:yy=1+py*2:sy=57+16*py:lr=-(px>13):sx=39+16*px+256*(lr=1)
  152. 151 return
  153. 152 cp=cp+1:ifcp>npthencp=1
  154. 153 return
  155. 154 gosub152:return
  156. 155 b=int(x/2)+int(y/2)*18:un(b)=fnrn(8)+1:ms=b:ml=1:gosub94:return
  157. 156 poke646,cl(cp):forz1=0to4:x=xx:y=yy:gosub138
  158. 157 printbl$(z1):ms=15*z1:ml=25:gosub94:next:gosub78:return
  159. 158 b=int(xx/2)+int(yy/2)*18:a=un(b):return
  160. 159 gosub158:ifa=0then162
  161. 160 x=xx:y=yy: